#!/bin/bash
###############################################################################
# @用例ID: 20230527-202047-407212483
# @用例名称: gdb_test
# @用例级别: 3
# @用例标签:
# @用例类型: 功能
###############################################################################
[ -z "$TST_TS_TOPDIR" ] && {
    TST_TS_TOPDIR="$(realpath "$(dirname "$0")/..")"
    export TST_TS_TOPDIR
}
source "${TST_TS_TOPDIR}/tst_common/lib/common.sh" || exit 1
###############################################################################

g_tmpdir="$(mktemp -d)"


tc_setup() {
    msg "this is tc_setup"
    # @预置条件:系统正常运行，且已安装 gdb
    assert_true yum install -y gdb

    # @预置条件:
    return 0
}

do_test() {
    msg "this is do_test"

    # 编写一个简单的 C 程序文件
    cat > test.c << EOF
#include <stdio.h>

int main() {
    int a = 5;
    int b = 7;
    int sum = a + b;
    printf("The sum is: %d\n", sum);
    return 0;
}
EOF

    # 编译 C 程序并生成可执行文件
    assert_true gcc -g -o test test.c

    # @测试步骤:1
    # 使用 gdb 调试可执行文件
    output=$(gdb -batch -ex "file test" -ex "break main" -ex "run" -ex "print sum" -ex "quit")

    # @预期结果:1
    # 确保 gdb 成功调试程序，并打印出变量 sum 的值
    expected_output="The sum is: 12"
    assert_contains "$output" "$expected_output"
    assert_true [ 1 -eq 1 ]
    return 0
}



tc_teardown() {
    msg "this is tc_teardown"
    rm -rf test
    rm test.c
    rm -rfv "$g_tmpdir" || return 1
    return 0
}

###############################################################################
tst_main "$@"
###############################################################################
